home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
cat
/
convertd.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
7KB
|
203 lines
DEFINITION MODULE ConvertDate;
TYPE Date = RECORD
day : INTEGER[1..31];
month: INTEGER[1..12];
year : INTEGER;
END;
Time = RECORD
second: [0..59];
minute: [0..59];
hour : [0..23]
END;
tWeekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
PROCEDURE CurrentDate (): LONGCARD;
(* Liefert das aktuelle GEMDOS-Datum im CAT-Format zurck
*)
PROCEDURE TextToDate ( s: ARRAY OF CHAR; VAR d: Date; VAR valid: BOOLEAN );
(* Die eigentliche Hauptfunktion: Sie wandelt sowohl ins Datum und
* berprft auch, ob das Datum gltig ist. Die wird auch von den
* Funktionen DateOK und StrToDate aufgerufen.
*)
PROCEDURE StrToMTDate (str : ARRAY OF CHAR; VAR res: ARRAY OF CHAR);
(* Eingabe: String mit relativ beliebigem Format.
* Ausgabe: Datum im Maustausch-Format, Uhrzeit wird auf 0 Uhr gesetzt
*)
PROCEDURE StrToDate (str : ARRAY OF CHAR) : LONGCARD;
(* Eingabe: String mit relativ beliebigem Format.
* Ausgabe: LONGCARD mit folgenden Format:
* jjmmddhhmm, Jahr minus 1990.
* 0000 immer, da Zeit nicht eingegeben wird.
* Anmerkung: Diese Funktion gibt nur bis 2032 das korrekte Datum
* zurck, da danach ein berlauf des 32-Bit Wertes
* auftritt. Sptestens dann ist diese Funktion bzw.
* das Datumsformat zu berarbeiten :-)
*)
PROCEDURE DateOk (str : ARRAY OF CHAR) : BOOLEAN;
(* DateOk prft nach, ob ein Datum in einem String ein gltiges Datum ist.
* Wenn nicht, wird FALSE zurckgegeben, andernfalls ...
*)
PROCEDURE TextDateToNum (date: ARRAY OF CHAR): LONGCARD;
(* Wandelt einen Datumsstring in Anzahl Tage um
*)
PROCEDURE DateInNum (date : CARDINAL): LONGCARD;
(* Wandelt ein Datum im GEMDOS-Format in eine Zahl um
*)
PROCEDURE NumInDate (num : LONGCARD): CARDINAL;
(* Wandelt eine Zahl in ein GEMDOS-Datum um
*)
PROCEDURE CatDate2Datim (cd: LONGCARD; VAR date: Date; VAR time: Time);
(* Wandelt ein CAT-Datum in ein Datum und eine Uhrzeit um
*)
PROCEDURE UnpackDate (date: CARDINAL): Date;
(* Wandelt GEMDOS-Datum in Datum um
*)
PROCEDURE PackDate (date: Date): CARDINAL;
(* Wandelt Datum in GEMDOS-Datum um
*)
PROCEDURE UnpackTime (time: CARDINAL): Time;
(* Wandelt GEMDOS-Zeit in Zeit um
*)
PROCEDURE PackTime (time: Time): CARDINAL;
(* Wandelt Zeit in GEMDOS-Zeit um
*)
PROCEDURE DateToJulian (d : Date): LONGCARD;
(* Wandelt ein Datum in eine Zahl (Tage seit 1.1.1980) um
*)
PROCEDURE WeekDay (d: Date): tWeekday;
(* Liefert den aktuellen Wochentag zurck
*)
PROCEDURE WeekEnd(d: Date): BOOLEAN;
(* Liefert TRUE, wenn das Datum am Wochenende ist
*)
PROCEDURE Holiday(VAR d: Date): BOOLEAN;
(* Gibt zurck, ob das Datum ein deutscher Feiertag ist
*)
PROCEDURE BussBet (year: INTEGER; VAR d: Date);
(* Liefert das Datum vom Bu- und Bettag
*)
PROCEDURE KarFreitag (year: INTEGER; VAR d: Date);
(* Liefert das Datum von Karfreitag
*)
PROCEDURE KarFreitagNumber (year: INTEGER) : LONGCARD;
(* Liefert das Datum von Karfreitag als Zahl
* Damit kann man einige andere variable Feiertage berechnen:
*
* Aschermittoch = Karfreitag - 44;
* Ostersonntag = Karfreitag + 2
* Ostermontag = Karfreitag + 3
* Christi Himmelfahrt = Karfreitag + 41
* Pfingstmontag = Karfreitag + 52
*)
PROCEDURE TimeToText ( s: Time; REF mask: ARRAY OF CHAR; VAR t: ARRAY OF CHAR );
(*
* Wandelt die Zeit 's' in den String 't'.
* 't' mu mindestens so gro wie die bergebene Maske sein, sonst
* tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
*
* Die Form wird durch 'mask' bestimmt:
*
* HH: Stundenzahl ("hh" lscht fhrende Null)
* MM: Minutenzahl ("mm" lscht fhrende Null)
* SS: Sekundenzahl ("ss" lscht fhrende Null)
*
* #E: AM/PM-Notierung (English) ("e" schreibt "am" bzw. "pm")
*
* Beispiele fr: >13 Uhr 50, 5s< >2 Uhr 50, 10s<
* 'hh:mm:ss' '13:50:5' '2:50:10'
* 'HH:MM:SS' '13:50:05' '02:50:10'
* 'hh:MM:SS' '13:50:05' '2:50:10'
* 'hh:MM #e' '1:50 pm' '2:50 am'
* 'hh Uhr mm' '13 Uhr 5' '2 Uhr 10'
*
* Ist 'mask' ein Leerstring, wird 'HH:SS:MM' verwendet.
*)
PROCEDURE DateToText ( s: Date; REF mask: ARRAY OF CHAR; VAR d: ARRAY OF CHAR );
(*
* Wandelt Datum 's' in String 'd'.
* 'd' mu mindestens so gro wie die bergebene Maske sein, sonst
* tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
*
* Die Form wird durch 'mask' bestimmt:
*
* D: Tagesziffer (d: wird gelscht, wenn nicht auffllbar)
* Y: Jahresziffer (y: wird gelscht, wenn nicht auffllbar)
* M: Monatsziffer (m: wird gelscht, wenn nicht auffllbar)
* G: Monatsbuchstabe Deutsch
* F: Monatsbuchstabe Frnzsisch
* E: Monatsbuchstabe English
* U: Benutzerdefinierter Monatsbuchstabe (s. 'MOSConfig.NameOfMonth')
* #E (Hinter Ziffern): s. Bsp. (#G, #F gehen z.Zt. nicht !)
*
* Beispiele fr: >13.5.1988< >1.9.2002<
* 'DD.MM.YY' -> '13.05.88' '01.09.02'
* 'mm-dd-yy' -> '5-13-88' '9-1-2'
* 'dd. GGG yyyy' -> '13. Mai 1988' '1. Sep 2002'
* 'yyyy, d#E of EEEEEEEEE' -> '1988, 13th of May' '2002, 1st of September'
* 'GGGGGGGGGGGG' -> 'Mai' 'September'
*
* Ist 'mask' ein Leerstring, wird 'DD.MM.YY' verwendet.
*)
PROCEDURE DayToText ( s: Date; REF m0: ARRAY OF CHAR; VAR d: ARRAY OF CHAR );
(*
* Wandelt Datum 's' in Wochentagsstring 'd'.
* 'd' mu mindestens so gro wie die bergebene Maske sein, sonst
* tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
*
* Die Form wird durch 'mask' bestimmt:
*
* G: Tagesbuchstabe Deutsch
* F: Tagesbuchstabe Frnzsisch
* E: Tagesbuchstabe English
*)
PROCEDURE FuzzyTime (uhrzeit: Time; REF mask: ARRAY OF CHAR; VAR ftime: ARRAY OF CHAR);
(* Wandelt eine Uhrzeit in einen String mit einer Fuzzy-Uhrzeit um.
* Von der Maske wird nur das erste Zeichen ausgewertet.
* G: Deutsche Fuzzytime
* E: Englische Fuzzytime
*)
PROCEDURE FuzzyDate (dt: Date; ti: Time; REF mask: ARRAY OF CHAR; VAR str: ARRAY OF CHAR);
(* Wandelt ein Datum und Uhrzeit in einen String mit einem Fuzzydatum um.
*)
PROCEDURE MakeFreeDate (cDt, cTi: CARDINAL; VAR str: ARRAY OF CHAR);
(* Kodiert das bergebene Datum und die bergebene Uhrzeit
* Im MausTausch-Format
* Das Datum und die Uhrzeit wird im GEMDOS-Format bergeben
*)
PROCEDURE MakeDate(VAR str : ARRAY OF CHAR);
(* Kodiert das aktuelle Datum und die aktuelle Uhrzeit
* Im MausTausch-Format
*)
END ConvertDate.